package com.itheima.controller;

import com.alibaba.fastjson.JSONObject;
import com.itheima.pojo.Dept;
import com.itheima.pojo.Result;
import com.itheima.service.DeptService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/*
   部门控制器类 里面定义 被浏览器访问方法
    加注解被spring管理
 */
@RestController
@Slf4j
@RequestMapping("/depts")
public class DeptController {

    //依赖 service 所以从spring找到对应的service
    @Autowired
    private DeptService deptService;//从spring中获取 service实现类对象

    /*
      依据接口文档写功能 查询
     */
    @GetMapping//基于接口文档基本信息写的
    public Result list(){//请求参数无 所以() 不写参数
        log.info("接收到了前端发来的get请求--查询所有的部门信息");
        //找service进行查询 所有的 部门数据
        // do service提供一个查询 所有部门信息的功能
        List<Dept> deptList = deptService.list();//假设它有 爆红不管
            //先完成controlle代码 回头 alt+enter 快速生成一个方法
        // 查到就把数据放到 result里面 返回给前端
        return Result.success(deptList);
    }

    // 依据接口文档 完成 删除部门代码
    @DeleteMapping("/{id}")
    public Result delete(@PathVariable Integer id) throws Exception {//2
        log.info("根据id删除指定部门:"+id);
        //找service完成
        deptService.deleteById(id);

        //响应
        return Result.success();
    }

    // 依据接口文档 完成部门添加
    @PostMapping
    // json格式  对象接收 @RequestBody
    public Result add(@RequestBody Dept dept){
        log.info("新增测部门信息:"+dept);
        log.info("新增部门信息{}",dept);
        // service完成
        deptService.add(dept);
        return Result.success();
    }
    //根据接口文档 完成根据id查询部门信息
    @GetMapping("/{id}")
    public Result getById(@PathVariable Integer id){
        log.info("根据id查询部门信息:"+id);
        //service根据id找到这个部门
        Dept dept = deptService.getById(id);
        return Result.success(dept);
    }
    // 根据接口文档 完成 根据id进行编辑
    @PutMapping
    public Result update(@RequestBody Dept dept){
        log.info("被修改的信息:"+dept);
        // service完成更新
        deptService.update(dept);//只有 id  name
        return Result.success();
    }
}
